package pe.gob.foncodes.ssa.bs.common.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.log4j.Logger;

public class ExpressionsValidator {

    protected static Logger log = Logger.getLogger(ExpressionsValidator.class);

    /**
     * Valida que la direccin IP cumpla con el formato "usuario@dominio"
     * @param correo
     * @return <b>true</b> en caso de xito y <b>false</b> en caso contrario
     */
    public static boolean validarEmail(String correo) {
        String input = correo;
        // comprueba que no empieze por punto o @
        Pattern p = Pattern.compile("^([0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})$");
        Matcher m = p.matcher(input);
        if (!m.matches()) {
            return false;
        }
        return true;
    }

    /**
     * Valida que la cadena de texto enviada como parmetro tenga solamente valores numricos
     * @param cadenaNumero string con valor numrico
     * @return <b>true</b> en caso de xito y <b>false</b> en caso de error
     */
    public static boolean validarSoloNumeros(String cadenaNumero) {
        if (cadenaNumero == null) {
            return false;
        }
        // Valida que el texto solamente contenga nmeros
        Pattern p = Pattern.compile("^\\d+");
        Matcher m = p.matcher(cadenaNumero);
        if (m.matches()) {
            return true;
        }
        return false;
    }

    /**
     * Valida que la cadena de texto slo contenga caracteres alfanumricos, guin 
     * y guin abajo.
     * @param cadena texto que se validar
     * @return <b>true</b> en caso de xito <b>false</b> en caso contrario 
     */
    public static boolean validarSoloAlfanumerico(String cadena) {
        if (cadena == null) {
            return false;
        }
        Pattern p = Pattern.compile("^([a-zA-Z0-9_-]+)$");
        Matcher m = p.matcher(cadena);
        if (m.matches()) {
            return true;
        }
        return false;
    }
}
